using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Magiq.Delete;
using Magiq.Insert;
using Magiq.Support;
using Magiq.Update;

namespace Magiq {
    public interface IMagiqProvider {
        IUpdateProvider GetUpdateProvider();
        IDeleteProvider GetDeleteProvider();
        IInsertProvider GetInsertProvider();
        IQueryable<T> CreateQueryableFrom<T>(IEnumerable<T> enumerable) where T : class;
        bool Handles(IEnumerable source);
        bool Handles(IEnumerable source, IEnumerable destination);
        IItemsAdder<TNew> ItemAdderFor<TNew, TDestination>(IEnumerable<TDestination> enumerable) where TDestination : class;
    }
}